<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<!--<script>
    alert("hello JS");
</script>-->
<!--外部js-->
<!--<script src="../JSFile/demo01.js"></script>-->
<!--三种输出方式-->
<script>
    /*   console.log("输出方式1：写入控制台")
       document.write("输出方式2：写入html");
       alert("输出方式3：写入警告框");*/

    //var关键字定义问全局变量且可以重复声明
    /*{
        var a = 1;
        var a = "小王";//小王会覆盖1
    }
    alert(a);*/
    //let 关键字类似var 但是声明的变量只在let中有效且不能重复声明
    {
        let b = 1;
        //let  b=2;  重复声明会报错
    }
    // alert(b);会报错 b is not defined

    //const定义常量
    const id = 1;
    //id=2 重新赋值报错

    //数据类型   null  undefined
   /* var a=null; //显示object
    alert(a)
    var b;
    alert(b)//未赋值 显示undefined*/
//运算符 ==  和 === 区别
    /*var age1=10;
    var age2="10";
    alert(age1==age2);//1.判断类型是否一样 如果不一样 则进行类型转换 2 比较转换后的值是否一样 所有显示true
    alert(age2===age1);//1.判断类型是否一样 如果不一样之间显示false 不进行类型转换*/

    /*
        类型转换：
            * 其他类型转为number：
                1. string: 按照字符串的字面值，转为数字.如果字面值不是数字，则转为NaN。一般使用parseInt
                2. boolean: true 转为1，false转为0
*/
   /* var str=+"abc"; //+"abc" 标识把”abc“ 转换为数字
    alert(str);
    var nub=+"20";
    alert(nub);
    var nub2="10";
    alert(parseInt(nub2));*/
  /*  var flag=+false;
    alert(flag);
    var flag2=+true;
    var nub3="99";
    alert(flag2);
  //  alert(parseInt(flag2)); parseInt对boolean 无效
    alert(parseInt(nub3));*/

/* * 其他类型转为boolean：
                1. number:0和NaN转为false，其他的数字转为true
                2. string:空字符串转为false，其他的字符串转为true
                3. null:false
                4. undefined:false*/
/*    var i=0;
    var y=NaN;
    if (i||y){
        alert("转为true");
    }else {
        alert("转为false");
    }*/

    /*var str="";
var str1="asdf";
    if (str){
        alert("转为true");
    }else {
        alert("转为false");
    }
    if (str1){
        alert("转为true");
    }else {
        alert("转为false");
    }*/
 /*   var a=null;
    var b;
    if (a){
        alert("转为true");
    }else {
        alert("转为false");
    }
    if (b){
        alert("转为true");
    }else {
        alert("转为false");
    }*/

 /*   函数(方法)定义
 *      function 函数名(参数1,参数2..){
            要执行的代码
                }
 *  形式参数不需要类型。因为JavaScript是弱类型语
 *  返回值也不需要定义类型，可以在函数内部直接使用return返回即可
 *
 * 函数调用:
 * 函数名称(实际参数列表);

 *  */
    /*function add(a,b) {
      return  a+b;
    }
    let c=add(10,20);
    alert(c);*/

    //流程控制语句
/*        //1.if
    var count=3;
    if(count=3){
        alert(count)
    }
        //2 switch
    var num=3;
    switch (num) {
        case 1:
            alert( "星期一");
            break;
        case 2:
            alert("星期二");
            break;

        case 3:
            alert("星期三");

    }
        //for
    var num2=0;
    for (var i=0;i<100;i++){
        num2+=i;

    }
    alert("for:"+num2);
        //do while
    var a=0;
    var b=1;
    do{
        a+=b;
        b++;
    }while (b<100);
    alert(a)*/

    //数组
   /* var arr=[1,2,3,4];
    alert(arr.length);
    //添加
    arr.push(10);
    alert(arr)
    //删除
    arr.splice(1,2)
    alert(arr)*/

    //自定义对象
  /*  var user={
        name:"张三",
        age:18,
       eat: function (){
            alert("吃饭啦")
    }
    }
    alert(user.name);
    alert(user.age);
    user.eat();*/

    //误删提醒
  /* var flag= confirm("确认删除吗？");
   alert(flag);
   if (flag){
       //删除代码
   }*/

   /*定时器
        1 setTimeout(方法名或方法，时间 )
        2  setInterval(方法名或方法，时间 )
        */
  /*  setTimeout(
        function eat(){
            alert("吃饭了")
        },1000
    )

    setInterval(
        function eat () {
            alert("吃饭了")
        },2000
    )*/
</script>
</body>
</html>